/*
 * ========================================================
 * Copyright(c) 2014 杭州偶尔科技-版权所有
 * ========================================================
 * 本软件由杭州偶尔科技所有, 未经书面许可, 任何单位和个人不得以
 * 任何形式复制代码的部分或全部, 并以任何形式传播。
 * 公司网址
 * 
 * 			http://www.kkkd.com/
 * 
 * ========================================================
 */
package com.simon.mengkou.future.handler;

import android.content.Context;

import com.ouertech.android.agm.lib.base.future.core.AgnettyFuture;
import com.ouertech.android.agm.lib.base.future.core.AgnettyResult;
import com.ouertech.android.agm.lib.base.future.core.event.ExceptionEvent;
import com.ouertech.android.agm.lib.base.future.local.LocalEvent;
import com.ouertech.android.agm.lib.base.utils.UtilList;
import com.simon.mengkou.data.bean.base.Product;
import com.simon.mengkou.future.base.OuerFutureListener;
import com.simon.mengkou.future.base.OuerLocalHandler;
import com.simon.mengkou.system.global.OuerApplication;
import com.simon.mengkou.system.global.OuerDispatcher;

import java.util.List;

/**
 * @author : Zhenshui.Xia
 * @since : 2016/5/17.
 * desc    :
 */
public class DeleteCartHandler extends OuerLocalHandler {

    public DeleteCartHandler(Context context) {
        super(context);
    }

    @Override
    public void onHandle(LocalEvent evt) throws Exception {
        List<Product> products = (List<Product>) evt.getData();
        delete(products);
        evt.getFuture().commitComplete(null);
    }

    @Override
    public void onException(ExceptionEvent evt) {
        evt.getFuture().commitException(null, evt.getException());
    }

    @Override
    public void onDispose() {

    }


    private void delete(final List<Product> products) {
        if(UtilList.isEmpty(products)) {
            OuerDispatcher.deleteCartBroadcast(mContext);
        } else {
            Product p = products.get(0);
            AgnettyFuture future = OuerApplication.mOuerFuture.cartEdit(
                    p.getId(), 0, p.getOrderItemId(), new OuerFutureListener(mContext){
                        @Override
                        public void onComplete(AgnettyResult result) {
                            super.onComplete(result);
                            products.remove(0);
                            delete(products);
                        }
                    });
        }
    }


}
